﻿package net.molchat.android.core;


// ============================================================== Системные часы
public final class Clock {

//======================================================== Глобальные переменные
// Время
private static int timeOffset = Setting.timeLocShift * 60 * 60 * 1000; // Смещение часов, мсек
public static int timeH = 0; // Системное время. Часы
public static int timeM = 0; // Системное время. Минуты
public static int timeS = 0; // Системное время. Секунды
private static int timeT = 0; // Временное время
private static StringBuffer timeStr = new StringBuffer(8);
private static long minus;


//========================================================== Инициализация часов
public static void init() {

	timeOffset = Setting.timeLocShift * 60 * 60 * 1000;
	minus = (System.currentTimeMillis() + timeOffset) / 1000 / 86400 * 86400;
}


//================================================================ Текущее время
public static void timeUpdate() {

	//Log.v("Clock.timeUpdate", "dateTime=" + (System.currentTimeMillis() + timeOffset));
	timeT = (int) ((System.currentTimeMillis() + timeOffset) / 1000 - minus); // Кол-во секунд в текущих сутках
	timeH = (int) (timeT / 60 / 60); // Кол-во целых часов
	timeT -= timeH * 60 * 60;
	timeM = (int) (timeT / 60); // Кол-во целых минут
	timeS = timeT - timeM * 60;
	if (timeH >= 24) {
		init();
		timeUpdate();
	}
}


//================================================== Текущее время в виде строки
public static String getTime() {

	timeUpdate();
	timeStr.delete(0, timeStr.capacity());

	if (timeH < 10) {
		timeStr.append('0');
	}
	timeStr.append(timeH).append(":");

	if (timeM < 10) {
		timeStr.append('0');
	}
	timeStr.append(timeM);

	if (Setting.fClkSec) {
		timeStr.append(":");
		if (timeS < 10) {
			timeStr.append('0');
		}
		timeStr.append(timeS);
	}

	return timeStr.toString();
}


}
